約 2,990,983 件
https://w.atwiki.jp/memo77/pages/68.html
PageLastUpdate 2014-04-09/today - /yesterday - クリックすると見出し一覧を表示します MergeとLoadDataRowの違い ICollection T はICollectionを継承していないのに、実体クラスはICollectionにキャストできることが多い DataTableのAutoIncrementをリセットするバッドノウハウ データセット内に同一名を持つDataTableがあるとDataSet.Tables.Removeでエラー comment MergeとLoadDataRowの違い 2014/04/09 TableA.Merge(TableB,PreserveChanges)としたとき RowVerision TableA TableB True False Original 1 3 3 3 Current 2 4 2 4 PreserveChanges=FalseのときはOriginalとCurrentを更新する。 PreserveChanges=TrueのときはOriginalのみを更新する。 DataRowVersion.Currentだけを更新することはできない。 LoadDataRowは必ずDataRowVersion.OriginalとDataRowVersion.Currentの両方あるいは何れかを更新するか選べる。 TableAに存在しない行はPreserveChangesに関わらず、OriginalとCurrentが追加され、RowStateも変わらない。 RowVerision TableA TableB True False Original null 3 3 3 Current null 4 4 4 ICollection T はICollectionを継承していないのに、実体クラスはICollectionにキャストできることが多い 2014/01/10 DataRowCollectionがイマイチ使いにくいコレクションで、型変換をさぼれる関数を作ろうとしたときに、DataRow()やList(Of DataRow)と共有するにはIEnumerableまで遡らないといけない。 まあ遡ってたんですけど、どうしてもCountが使いたいケースでIEnumerableだと効率悪すぎ。 と、思って苦し紛れに引数をICollectionにしてList(Of DataRow)を突っ込んでみたら、きちんと動いて「?!?!?!」ってなった。 よく実装を見てみたら、ICollection T はICollectionを継承してないけど、IList T はICollectionを実装してる・・・。 他のジェネリック系コレクションもことごとく実装してるから、うん、まあこれでいいけど。 他の人が独自クラスでICollection T 使ってなんか組んだときとか、はまりそうだからエラーメッセージきちんといれておくかなあ。 DataTableのAutoIncrementをリセットするバッドノウハウ 2014/01/08 あまり感心しない方法だけど、AutoIncrementStepを逆方向にしてNewRowを発行すると0に戻せる。 table.Clear() col.AutoIncrementStep = -1 col.AutoIncrementSeed = -1 table.NewRow() このDataRowは使わずに捨てる col.AutoIncrementStep = 1 col.AutoIncrementSeed = 1 行をクリアせずにリセットすることもできるので、AutoincrementをFalseにした後に再採番するとかも可能ですね。 重複させることもできてしまうので注意。リセットした後にAutoincrementSeedに発行したい番号をセットするとかいろいろ工夫が必要。 LoadDataRowで同一行を重ね読みしたときにAutoIncrement列をNothingにすると、書き換わらないけど内部カウンタはIncrementされているのに気付いてどうにかなんないかと試行錯誤した結果。 データセット内に同一名を持つDataTableがあるとDataSet.Tables.Removeでエラー 2010/10/06 TableNameでRemoveしようとしているわけじゃないです。引数にDataTableを指定してもRemoveAtでIndexを指定してもエラー。 指定された名前 example と同じ名前が、名前空間が異なるコレクション オブジェクト内に少なくとも 2 つあります。 Microsoft馬鹿じゃないの。オブジェクトのインスタンスなんて名前で押さえてたらバグの元だから名前で管理なんてしない。 Tables.AddでチェックしないのにRemoveでエラーってどんなトラップ。 2013/12/17追記 今日.Net2005環境で再現コード書こうとしたらきちんとAddでもRenameでもエラーになったので、夢を見ていたか修正されたか、そのときの特殊条件があったかですね。 comment このページの記述で聞きたいこととか間違ってることとかありましたらコメントを。 名前 コメント すべてのコメントを見る
https://w.atwiki.jp/tdd1tessa/pages/42.html
ネットワークを介してOracleデータベースにアクセスするために提供されている機能や、サービスを総称してOracle Net Servicesという。ここではOracle Net Servicesの主要コンポーネントであるOracle Netについて説明する。 Oracle Netとは アプリケーション(クライアント)とサーバー間の接続を確立し、両者のメッセージを交換する機能を提供するソフトウェアである。 以下の図のようなクライアント/サーバー構成では、クライアント側とサーバー側の両方にOracle Netがインストールされている必要がある。 ネットワークを介してOracle Databaseにアクセスするために、クライアントはOracleサーバーとの間に以下の方法でセッションを確立する必要がある。 クライアントからOracleサーバー上のリスナープロセスに対して接続要求を送信する リスナープロセスはクライアントから接続要求を受けると、その内容が適切であることを確認し、専用サーバープロセスを起動する(専用サーバーの場合) クライアントは専用サーバープロセスに接続し、SQLを送信する。 専用サーバープロセスは、送信されたSQLをインスタンスを介して処理する。 このようなセッションを確立するために、サーバー側およびクライアント側について、それぞれ次のようなOracle Netの設定が必要である。 サーバー側:クライアントからの接続要求を受け入れるためのリスナープロセスの構成。 クライアント側:どのデータベースに接続するかを指定するための方法(ネーミングメソッド)の構成 戻る
https://w.atwiki.jp/blesswiki/pages/59.html
4Gamer.net − BLESS MMORPG「BLESS」のサービスが8月8日をもって終了へ 「BLESS」で開催されている「天才!ジト博士の挑戦状」の追加イベントが開始 「BLESS」でGWイベント「天才 ジト博士の挑戦状!」が本日スタート LEVEL∞,「黒い砂漠」「TERA」「AVA」「BLESS」「ArcheAge」各タイトルの推奨PCを刷新 「BLESS」,1周年記念イベントフェーズ2を開始。「ココ掘れOneOne」イベントも 「BLESS」,まもなく迎える1周年を記念する特設ページが公開。WebMoney総額100万円分が当たる各種イベントも ゲームオンは本日(2018年10月31日),同社が運営するオンラインRPG「BLESS」が11月2日にオープンサービス開始から1周年を迎えることを記念し,1周年特設ページを公開した。まもなく迎える1周年に合わせ,総額100万円分の「WebMoney」をプレゼントする各種イベントが行われるとのこと。 「BLESS」が11月2日で1周年。9月26日から開催のイベント予告ページが公開に 「BLESS」で夏の大型イベント「BLESS Premium Festa 2nd season」が開催 「BLESS」,ゲーミングPCなどが当たる“BLESS Premium Festa”が開催 「BLESS」,「[討伐隊]パタラ廃墟」(後半)や「ニグラ・トゥリス」の「上級」を含む最新アップデート「蛇神と炎王」が本日実装 ゲームオンは,PC用MMORPG「BLESS」で,最新アップデート「蛇神と炎王」を本日実装した。今回のアップデートにより,本作に“最強装備が眠る”という,討伐隊向けダンジョン「[討伐隊]パタラ廃墟」の後半や,「ニグラ・トゥリス」には高難度バージョンとなる「上級」が実装されている。 引用元 : http //www.4gamer.net/games/142/G014239/contents.xml
https://w.atwiki.jp/mbdays/pages/15.html
Net Service 現在利用している有料/無料、様々なネットサービスに関する説明。 やっぱりこれからはクラウドになってしまうってこと? Remember The Milk Dropbox Evernote Flickr YouTube GMail Google Bookmark Google Reader Google Calender iGoogle Blogger Haloscan
https://w.atwiki.jp/impcsuz/pages/13.html
各種データ系 アイドレスに関する図鑑や辞書などなど、データ系へのリンクです。 ※なお華さん管理のアイテム図鑑(http //www35.atwiki.jp/marsdaybreaker/pages/52.html)は携帯可とありますが、現状携帯からでは容量重くてエラー出ました。 アイドレス国民番号保管所(携帯用軽量版) [やひろさん/ナニワアームズ商藩国] i=dress pictnavi(技族さん用ブックマーク集) [S×Hさん/ビギナーズ王国] "文殊" アイドレス統合データベース [管理:越前藩国] 未取得ACE一覧表 (テーブルタグ使用) [管理:akiharu国] 職4アイドレス一覧 [管理:鍋の国] イグドラシル大全 (テーブルタグ使用) ⇒ pc2m経由 [管理:FEG] アイドレスWiki アイドレスQAデータベース (pc2m経由) ACEアイドレスまとめ [川流鐘音さん/世界忍者国] NPC藩国まとめ [管理:無名騎士藩国] 判明アイドレスコメント事典 [龍鍋ユウさん/鍋の国] アイテム所持者一覧 [藤村 早紀乃さん/鍋の国] アイドレス取得ルール [クレール@るしにゃん王国]
https://w.atwiki.jp/ac1226/pages/28.html
インポートエラーテーブル削除 Dim dbs As Database Dim tbl As TableDef Dim j As Long Set dbs = CurrentDb dbs.TableDefs.Refresh For j = dbs.TableDefs.Count - 1 To 0 Step -1 If dbs.TableDefs(j).Name Like "*インポート エラー*" Then dbs.TableDefs.Delete dbs.TableDefs(j).Name End If Next j dbs.Close Set dbs = Nothing 変数テーブル削除 例1) strSQL = "DELETE * FROM " strTbl //テーブル名に(カッコ)は使わないように ↑スペースが入る 例2) strSQL = "DELETE * FROM t_A" i テーブルにフィールド追加 strSQL = "ALTER TABLE テーブル名 ADD COLUMN フィールド名 INTEGER" DoCmd.RunSQL strSQL フィールド名が記号の場合[]で囲む strSQL = "ALTER TABLE テーブル名 ADD COLUMN [ ] INTEGER" テーブルからフィールド削除 strSQL = "ALTER TABLE テーブル名 DROP COLUMN [ ]" DoCmd.RunSQL strSQL
https://w.atwiki.jp/hamilton/pages/116.html
「ベイスターズ実況板」の親ページ。http //www.livebays.net/ 横浜実況板のスレたてルール 実況中の場合 レス番900をとった人が次スレを立てる。 雑談中の場合 レス番950をとった人が次スレを立てる。 実況雑談どちらのケースでもスレを立てる宣言を忘れずに。立てられなくても素直に申告。 新スレのレス1には前スレのURLを貼る。 タイトルのpart○の数字を増やすことも忘れずに。 スレ立ての際はsageは使わない。 実況版の利用はできるだけ2ch専用ブラウザで。 下記の実況板ルールにおいて、いくつか専ブラ(スマートフォン含む)の名前が挙がっているので参照してください。 livebays bot (livebays) on Twitterhttp //twitter.com/livebays (更新停止中) 機能 おかず機能 !star機能 名無し メール欄に sage と入れるとスレは上に上がりません。 kage 〃 真ん中に移動します。 dame 〃 一番下まで下がります。 dat落ちなどはかんりにんさんが管理されているので 2chのようなスレ埋め立ての必要はありません。 かんりにん ★さん直筆のlivebays横浜実況板ルール 16年度版 ☆☆2016横浜DeNA実況スレ 3/25 広島戦 part1☆☆ http //www.livebays.net/test/read.cgi/live/1458835365/ From [1] かんりにん ★ Date 2016/03/25(金) 01 02 45 波乱の船出!どうするラミちゃん、どうなるベイスターズ! 【このスレには試合開始前、スタメン発表までは書き込まないでください】 ★★実況中は900 それ以外のときは950を踏んだ方が次スレを立ててください★★ 実況には2ちゃんねる用ブラウザの使用を強く推奨します。 ↓実況用テンプレページはこちら http //www.livebays.net/score.html ↓わからない実況板用語はここで http //www38.atwiki.jp/hamilton/ From [2] かんりにん ★ Date 2016/03/25(金) 01 03 32 【この掲示板は】 当所は横浜DeNAベイスターズの試合を「実況」をする事を 目的として設置されている掲示板です。 利用者の皆様があれやこれやと盛り上がる場となってくれれば幸いです。 ただし、荒らし行為や悪質なデマ、度を越した誹謗中傷・煽りなど、 他の利用者に迷惑となる行為は禁止します。 そういった書き込みに対しては、実況板管理人(自分です)の判断で 予告無しに削除する場合があります。 また、書き込み規制も予告無し・報告無しに行う事もあります。 過度の名誉毀損や個人情報などの書き込みに対しては、 各プロバイダ・キャリアへの通報や プロバイダ責任制限法に基づき発信者情報の開示を行う場合があります。 あらかじめご了承ください。 荒らしはスルーしてください。反応すると荒らしに喜ばれます。 ここは2ちゃんねる掲示板ではありません。 2ちゃんねるのノリや独特の言葉使いなど嫌がられる場合が多いです。 くれぐれもご留意ください。 From [3] かんりにん ★ Date 2016/03/25(金) 01 03 50 【重要】 PCからのこの掲示板の閲覧、書き込みには「jane style」「Live2ch」などの サーバーに優しい2ちゃんねる用ブラウザを使うことを強く推奨します。 この板 http //www.livebays.net/live/ を外部板登録してください。 IEやFireFoxなど一般のWEBブラウザを使う事により発生するCGIの高負荷や転送量の増大は、 この板にとっての命取りになってしまいます。 また、レスの読み込みについては試合中など予告なく 2ちゃんねるブラウザ専用となる場合があります。ご注意ください。 【スマートフォン・タブレットをお使いの方】 iOS(iPhoneなど)の「BB2C」「twinkle」、Androidアプリの「2chmate」「2chgear」などで この板を外部板登録すると、読み書きともに可能です。ぜひご利用をお願いします。 (OSとソフトは最新版に更新が必須の場合があるようです。) もしこの板が何かの事態で使用不可能に陥った場合には、下記の板をお使いください。 実況予備板:http //yobi.livebays.net/cgi/baystars/ From [4] かんりにん ★ Date 2016/03/25(金) 01 04 09 【スレ立てのルール】 試合実況中は各スレッドの 900を踏んだ方が次のスレッドを立ててください。 それ以外の時間帯は 950を踏んだ方が立ててください。 何らかの事情で建てられない場合はその旨を書きこんでください。 その場合はどなたかが代理でお願いします。 スレッドを立てられなかったと言って、その方への叩き行為などはお止めください。 スレッドのタイトルは 「☆☆2016横浜DeNA実況スレ 3/25 広島戦 part1☆☆」 のようなフォーマットでお願いします。 一試合ごとに通し番号はリセットでお願いします。 試合終了後のスレ立ては 「☆☆2016横浜DeNA実況スレ 3/25 広島戦 エピローグpart1☆☆」 みたいな感じでお願いいたします。 試合前最初のスレ立ては、先発オーダー発表後に立てていただきたく。 (その前のスレッドが900に達してなくても構いません) From [5] かんりにん ★ Date 2016/03/25(金) 01 04 23 【お願い】 実況板は皆様のボランティア精神と義侠心の上に成り立っております。 試合をTVやラジオにてリアルタイムでご確認できる方がいらっしゃいましたら、 ぜひぜひ実況をお願いいたします。簡単な打席結果に関する情報でも助かります。 より詳しい実況をしていただけるありがたい方はこんなツールがあります。 http //eaglesaa.so.land.to/oboge/(大ちゃんといっしょ 実況ツール) http //www.livebays.net/score.html(スコアAAジェネレータ) ぜひぜひ何卒よろしくお願い申し上げます。 From [6] かんりにん ★ Date 2016/03/25(金) 01 04 37 【補足】 この掲示板は「横浜DeNAベイスターズ実況板」です。 試合時間外の雑談や多少の他球団ネタなどは否定しませんが、あくまで 「ベイスターズファンの、ベイスターズファンによる、ベイスターズファンの為の掲示板」 であり、あくまで「横浜ベイスターズを実況してあれやこれや盛り上がる板」 であるという事をご認識の上、ご利用いただくようお願いいたします。 あなたの書き込みをPCやモバイルの向こうで沢山の人々が読んでいる、という事を忘れないでください。 顔の見えない文字だけのコミュニケーションはちょっとの事で誤解やいさかいが起こりがちです。 その発言、その言葉使いが本当に恥ずかしくないものか。もう一度よく考えて書き込みましょう。 腹が立つこともあるかもしれませんが、同じ場所に集まったベイファン同士。仲良くしましょうよ。 何かご質問やご連絡などがありましたら http //www.livebays.net/test/read.cgi/live/1381491852/ まで。 From [7] かんりにん ★ Date 2016/03/25(金) 01 04 50 【かんりにんから一言】 この掲示板で実に15度目の開幕、そして6度目の監督交代となります。 新戦力の台頭に怪我人の発生、 さらには次々出てくる球界の暗いニュースなど いろいろと騒がしい中で迎える開幕戦です。 今いち、どうなるか分からない船出ですが 楽しみもあれば不安もあり、昨年の屈辱からの巻き返しはなるか。 今年は前半戦だけではなく後半戦も楽しみたい!切に願います。 今年もよろしくお願い致します。 IE使用について ☆☆ 06〜 07オフシーズン用雑談スレpart24☆☆ http //yobi.livebays.net/07ji/oflog/1162044302.html 44 :ホッシー君@修行中 :2006/10/28(土) 23 48 27 かんりにんさん> 雑談タイムも「IEはなるべくご遠慮」というルールは一緒でしょうか 試合実況の時はもちろんご遠慮だと思いますが・・・ 度々すいません、時々(昼間など)揉めることがあるようなので 「どっちかと言えば」的な裁定でもあったらありがたいと思うのですが 48 かんりにん@2006 ★ 2006/10/28(土) 23 50 30 44 そりゃ専ブラ使ってくれる方がありがたいです。強制はできませんが。 書き込みよりもレス読み込みの部分で特に 書き込む内容について ☆☆ 07オープン戦実況スレpart6(2/25〜)☆☆ http //yobi.livebays.net/07ji/op/1172382363.html 960 名前: かんりにん ★ 投稿日: 2007/02/25(日) 16 50 38 自分の書き込みの先には他の人間が読んでいるという事を意識した書き込みをお願いしたいっす ただ喧嘩腰で書き込みたいだけの人は他所いってください・・・ 解雇トレードネタについて ☆☆2004横浜実況スルッド4/18中日戦part3☆☆ http //yobi.livebays.net/04ji/4gatu/1082267882.html#R121 121 名前:かんりにん ★投稿日:2004/04/18(日) 15 07 31 あと、○○解雇とか○○トレードとかいうネタは予備板か2chでお願いします 野郎の裸に注意 ☆☆2009横浜実況スレ 7/21巨人戦 エピロ- part3☆☆ http //yobi.livebays.net/09ji/7gatu/1248179795.html#R596 596 :かんりにん ★ [] :2009/07/21(火) 23 49 08 だから野郎の裸には興味は無いんだよ!! 今日のログ見たら試合中に尻出してる男の画像のURL貼ってる書き込み発見して 今度はそっち系の荒らしかと対応しようと思ったぐらいだぜ 野球選手だとは思わんかった 624 :かんりにん ★ [] :2009/07/21(火) 23 54 35 まあそういう画像を貼って思う存分ハァハァしたいなら予備板でやっとくれ! かんりにんとの約束だ! 692 :ホッシー君@梅雨入り [] :2009/07/22(水) 00 05 15 イケメンネタと選手の裸ネタに食いつく人が多いのを見るにつけ 女性が結構多いんだなあとは思う 700 :ホッシー君@梅雨入り [] :2009/07/22(水) 00 06 13 692 選手の裸にはあんまり興味ないなあ 702 :ホッシー君@梅雨入り [] :2009/07/22(水) 00 06 52 692 女性の体はいくらでも資料あるんだけど 男だといい感じのはない・・・というか絶対数自体が少ないんだよな と資料として男性ヌードが欲しい自分が 726 :かんりにん ★ [] :2009/07/22(水) 00 10 20 692 まあ毎日そればっかりやられるようになったら、ちょっと考えますがねw 739 :ホッシー君@梅雨入り [] :2009/07/22(水) 00 12 00 726 禁止は勘弁してください>< 784 :かんりにん ★ [] :2009/07/22(水) 00 18 02 739 禁止というか二次元ネタ的な扱いですかね そっち系のネタは少人数で変に加速しているようなのが困り物で・・・ 800 :ホッシー君@梅雨入り [] :2009/07/22(水) 00 19 30 784 別の話題が出てもひたすらその話続ける人が多いってのもあるかも知れませんね 食いつく話題によりけりですが 嘘記事ネタ記事は勘弁 ベイスターズ球団売却検討話スレ3 http //www.livebays.net/bbs/test/read.cgi/live/1285987357/ 500 :かんりにん ★ [] :2010/10/03(日) 23 00 46 記事貼るんだったら最低限ソースがどこかぐらいは記載してください、お願いします 嘘記事やネタ記事はご勘弁ください 注ミャハウ☆ 過去に荒らしなど問題行為をしたレスのIPから書き込むと、レスの最後に「注ミャハウ☆」がつくことがある。 ☆☆2010横浜実況スレ 5/5 広島東洋戦 part1☆☆ http //yobi.livebays.net/10ji/5gatu/1273034034.html 58 名前:かんりにん ★ 投稿日:2010/05/05(水) 13 55 09 とりあえずNGワードを設定される方は「ミャハウ☆」でNGワードにするんじゃなくて「注ミャハウ☆」でNGワードにしていただければと お知らせ http //www.livebays.net/bbs/test/read.cgi/live/1065808763/ 804 :かんりにん ★ [sage] :2010/08/31(火) 22 47 08 基本的に構ってちゃん相手はスルーでお願いします ミャハウをつけたりアク禁してもリモホが変わる以上はいたちごっこでしかありませんし ご協力をお願いします
https://w.atwiki.jp/knowledgebase/pages/15.html
EntityFrameworkについて インストール EF5 バックエンドデータベース Code Firstプログラミング サンプルソース DbContext エンティティクラス 型 日付(DateTime) 複合型フィールド 外部関連 モデルの階層化(TPT) 属性 データベースの設定 エンティティの使い方 エンティティの追加 エンティティの削除 LINQを使ったエンティティの検索方法 エンティティのキーから検索 ジェネリックな方法でプロパティにアクセス 関連 関連エンティティの積極的読み込み 関連エンティティの遅延読み込み 遅延読み込み無効化 ライフサイクル EntityState.Add EntityState.Detached ローカルデータ(未コミットデータ) 低レベルSQLの実行 参照 プログラミング EntityFrameworkについて http //msdn.microsoft.com/ja-jp/library/bb386871%28v=vs.90%29.aspx EntityFramework 5 VisualStudio2010とVisualStudio2012に対応。 EntityFramework 5 Beta 2012年3月29日 VisualStudio11に対応。また、VisualStudio2010ではエラーが発生するため、まだ動作しない。 EntityFramework 4.3.1 2012年3月29日 インストール VisualStudioから使用する場合、VisualStudioのExtensionであるNuGetManagerを使います。 VisualStudio2010では拡張機能であるNuGetPackageManagerを導入すれば、VisualStudio内からパッケージの取得・管理を行うことができる。 EF5 NotMapped属性の仕様が変更。 バックエンドデータベース SQL Server Compact 4.0 Microsoft SQL Server Compact 4.0 は、ソフトウェア開発者が ASP.NET Web サイトの構築と Windows デスクトップ アプリケーションの作成に使用できる、無償の埋め込み型データベースです。SQL Server Compact 4.0 はコンパクトで、アプリケーション フォルダー内にバイナリ ファイルをプライベート配置することができ、Visual Studio と WebMatrix を使用してアプリケーションを簡単に開発でき、スキーマとデータを SQL Server にシームレスに移行できます。 Code Firstプログラミング Code Firstプログラミングとは、データベースを使うにあたってのデータ構造をSQLや別のツールを使ってあらかじめ構築することなく、C#のオブジェクト指向プログラミングで定義されたクラスをそのままデータ構造として使うプログラミング方法です。 EntityFrameworksでは使用するクラスを元にデータ構造を構築し、データベースの作成します。 PlainOldなクラスをデータモデルクラスに使用できる(POCOと同じ) CoC(convention over configuration) (Wikipedia 設定より規約) IDEが持つデザイナやXMLによる、マッピング記述が不必要 バックエンドのデータソースとしてSQLServerCEバージョン4.0を使用しています。 サンプルソース namespace Magic.Unicorn { public class Princess IPerson { public int Id { get; set; } public string Name { get; set; } public virtual ICollection Unicorns { get; set; } public virtual ICollection LadiesInWaiting { get; set; } } public class Unicorn { public int Id { get; set; } public string Name { get; set; } [Timestamp] public byte[] Version { get; set; } public int PrincessId { get; set; } // FK for Princess reference public virtual Princess Princess { get; set; } } public class Castle { [Key] public string Name { get; set; } public Location Location { get; set; } public virtual ICollection LadiesInWaiting { get; set; } } [ComplexType] public class Location { public string City { get; set; } public string Kingdom { get; set; } public ImaginaryWorld ImaginaryWorld { get; set; } } [ComplexType] public class ImaginaryWorld { public string Name { get; set; } public string Creator { get; set; } } public class LadyInWaiting IPerson { [Key, Column(Order = 0)] [DatabaseGenerated(DatabaseGeneratedOption.None)] public int PrincessId { get; set; } // FK for Princess reference [Key, Column(Order = 1)] public string CastleName { get; set; } // FK for Castle reference public string FirstName { get; set; } public string Title { get; set; } [NotMapped] public string Name { get { return String.Format( {0} {1} , Title, FirstName); } } public virtual Castle Castle { get; set; } public virtual Princess Princess { get; set; } } public interface IPerson { string Name { get; } } public class UnicornsContext DbContext { public DbSet Unicorns { get; set; } public DbSet Princesses { get; set; } public DbSet LadiesInWaiting { get; set; } public DbSet Castles { get; set; } } public class UnicornsContextInitializer DropCreateDatabaseAlways { protected override void Seed(UnicornsContext context) { var cinderella = new Princess { Name = Cinderella }; var sleepingBeauty = new Princess { Name = Sleeping Beauty }; var snowWhite = new Princess { Name = Snow White }; new List { new Unicorn { Name = Binky , Princess = cinderella }, new Unicorn { Name = Silly , Princess = cinderella }, new Unicorn { Name = Beepy , Princess = sleepingBeauty }, new Unicorn { Name = Creepy , Princess = snowWhite }, //new Unicorn { Name = No Princess } // 外部関連であるPrincessを未設定にはできない。 }.ForEach(u = context.Unicorns.Add(u)); var efCastle = new Castle { Name = The EF Castle , Location = new Location { City = Redmond , Kingdom = Rainier , ImaginaryWorld = new ImaginaryWorld { Name = Magic Unicorn World , Creator = ADO.NET } }, }; new List { new LadyInWaiting { Princess = cinderella, Castle = efCastle, FirstName = Lettice , Title = Countess }, new LadyInWaiting { Princess = sleepingBeauty, Castle = efCastle, FirstName = Ulrika , Title = Lady }, new LadyInWaiting { Princess = snowWhite, Castle = efCastle, FirstName = Yolande , Title = Duchess } }.ForEach(l = context.LadiesInWaiting.Add(l)); } } public class Program { public static void Main(string[] args) { Database.SetInitializer(new UnicornsContextInitializer()); var context = new UnicornsContext(); // Many of the code fragments can be run by inserting them here } } } DbContext DbContextはEntityFrameworkをつかってバックエンドデータベースと関連付けされたDbSetを管理するクラスです。 br DbSetのインスタンスは自動的にDbContext内でオブジェクトが設定されます。このオブジェクトは再設定することはないので、後述のようなGetterプロパティのみを公開したIDbSet型のプロパティを使います。 public class UnicornsContext DbContext { public DbSet Unicorns { get; set; } public DbSet Princesses { get; set; } public DbSet LadiesInWaiting { get; set; } public DbSet Castles { get; set; } } // または、下記のようにIDbSetを使ったプロパティ public class UnicornsContext DbContext { public IDbSet Unicorns { get; set; } public IDbSet Princesses { get; set; } public IDbSet LadiesInWaiting { get; set; } public IDbSet Castles { get; set; } } ContextのDbSetオブジェクトは再設定する必要がないため、Getterプロパティのみ公開するプロパティがもっとも理想です。 Setメソッドは、DbContext.Setメソッドとして実装しており、この関数はDbSet T を返すメソッドです。 public class UnicornsContext DbContext { public IDbSet Unicorns { get { return Set(); } } public IDbSet Princesses { get { return Set(); } } public IDbSet LadiesInWaiting { get { return Set(); } } public IDbSet Castles { get { return Set(); } } } エンティティクラス 型 日付(DateTime) DateTime型のフィールドです。 Nullを指定してもよい場合は、明示的にNull許容型のDataTime型として定義しなければなりません。 public class TestEntity { // Nullは指定できない。 // また、値は必ず設定する必要がある。 public DateTime NotNullDate{get; set;} // Nullは指定可能。 // 値は設定しない場合、自動的にNullになる。 public DateTime? NullDate{get;set;} } NotNullateはNullにすることはできないため、TestEntityのオブジェクトを作成したら必ず有効な値を設定しなければなりません。 複合型フィールド シリアライズ可能なクラスを値型としてEntityFrameworksに認識させることで、1つのテーブルのフィールドとして構築することができます。 次のような場合、CastleクラスのテーブルにはLocationクラスのフィールドが含まれます。 public class Castle { [Key] public string Name { get; set; } public Location Location { get; set; } public virtual ICollection LadiesInWaiting { get; set; } } [ComplexType] public class Location { public string City { get; set; } public string Kingdom { get; set; } public ImaginaryWorld ImaginaryWorld { get; set; } } [ComplexType] public class ImaginaryWorld { public string Name { get; set; } public string Creator { get; set; } } 外部関連 Princessプロパティは自動的にPrincessIdフィールドを外部キーとして外部関連エンティティを構築します。 br Prinsessプロパティで取得できるオブジェクトは、DbContextにより外部キーによって遅延読み込みが発生し、Princessプロパティアクセス時にデータベースから値が取得されエンティティを返します。 public class Unicorn { public int Id { get; set; } public string Name { get; set; } [Timestamp] public byte[] Version { get; set; } public int PrincessId { get; set; } // FK for Princess reference public virtual Princess Princess { get; set; } } 実際のUnicornテーブルのカラムは次のようになります。 int Id byte[] Version int PrincessId モデルの階層化(TPT) http //weblogs.asp.net/manavi/archive/2010/12/28/inheritance-mapping-strategies-with-entity-framework-code-first-ctp5-part-2-table-per-type-tpt.aspx 属性 KeyAttribute[Key] モデルの主キーとなるプロパティを指定する。 StringLengthAttribute[StringLength(XXX)] MaxLengthAttribute[MaxLength(XXX)] string型の場合、フィールドの最大文字数を設定します。MinLengthは未実装? ConcurrencyCheckAttribute[ConcurrencyCheck] データ検証を有効にするプロパティにマークする。 RequiredAttribute[Required] NULLを設定できないプロパティであることをマークする。 TimestampAttribute[Timestamp] タイムスタンプ情報を格納するフィールドであることを指定する。このフィールドはモデルクラスではbyte[]でマッピングします。 ComplexTypeAttribute[ComplexType] モデルに含むことができる複合データクラスである場合に指定する。クラス定義にのみ指定可能。この属性を設定したクラスは、データベースにシリアライズ化されて保存可能となります。ただし、複合データクラスは公開プロパティにプリミティブ型か他の複合データクラスしかメンバ変数に含むことはできません。 ColumnAttribute[Column] TableAttribute[Table] テーブル作成に関する情報を設定する。Nameプロパティは、作成するテーブル名を任意のものに設定します。 InversePropertyAttribute [InverseProperty] ForeignKeyAttribute [ForeignKey] DatabaseGeneratedAttribute [DatabaseGenerated] NotMappedAttribute [NotMapped] データベースの設定 App.configやWeb.configに使用するデータベースの種類などを設定します。 br 設定項目は使用するデータベース毎に異なるため、使用するデータベースのマニュアル等を参考にします。 記述した設定情報は、DbContextのコンストラクタで指定することで使用できます。 public class UnicornsContext DbContext { public UnicornsContext() base( UnicornsCEDatabase ) // または、次のように項目名を指定した記述も可能 // base( name=UnicornsCEDatabase ) { } } エンティティの使い方 エンティティの追加 エンティティのDbSetコレクションに新しいエンティティを追加して、DbContext.SaveChanges()を呼び出すことでデータが保存(アタッチ)されます。 context.Unicorns.Add(new Unicorn { Id = -1 ,Name= bbb }); context.Unicorns.Add(new Unicorn { Name = ccc }); context.SaveChanges(); 注意点として、DbContext.SaveChanges()を呼び出していない状態でも内部的にデータが保存される段階となることを忘れてはいけません。 context.Unicorns.Add(new Unicorn { Id = -1 ,Name= bbb }); context.Unicorns.Add(new Unicorn { Name = ccc }); DumpUnicornTest(context); // 何も出力されない context.SaveChanges(); DumpUnicornTest(context); // 上で追加した2つのUnicornレコードをダンプする また、UnicornはIdがint型となっており、自動的にAutoIncrementが設定されているため、Unicornsに要素を追加した順にIdが割り振られます。 br 上記のようにIdに「-1」という設定できない値や、未設定の場合でも正常な値を割り振ります。この動作はDbContext.SaveChanges()を実行した段階で行われます。 次のコードはDbContext.SaveChanges()を呼び出す前はIDが「-1」のレコードを見つけることができるが、DbContext.SaveChanges()を呼び出した後は見つけることができません。 context.Unicorns.Add(new Unicorn { Id = -1 ,Name= bbb }); var newUnicorn = context.Unicorns.Find(-1); if(newUnicorn != null) { Console.WriteLine( Idが-1のUnicornが存在する ); } context.SaveChanges(); var newUnicorn2 = context.Unicorns.Find(-1); if(newUnicorn2 == null) { Console.WriteLine( UnicornはNULLです ); } Console.WriteLine( newUnicornのID= + newUnicorn.Id); // IDは「-1」ではなく、DbContext.SaveChanges()で割り振られた新しいIDになっている。 エンティティの削除 DbSet.Removeにエンティティを削除するオブジェクトを与えます。 context.Unicorns.Remove(context.Unicorns.Find(1)); LINQを使ったエンティティの検索方法 DbSetはそのままLINQで使用可能なコレクションとして使用できるので、次のようなLINQを記述できます。 var unicorns = from u in context.Unicorns where u.Name.StartsWith( B ) select u; エンティティのキーから検索 エンティティの主キーで検索を行う場合は、取得したいエンティティのDbSet.Findメソッドで行います。 br 複合キーを持つエンティティの場合、モデル定義時に指定したカラムの順番に引数を指定します。 var unicorn = context.Unicorns.Find(3); // ID=3のエンティティを取得する。 var castle = context.Castles.Find( The EF Castle ); // IDが文字列型の場合でも、取得できます。 var lady = context.LadiesInWaiting.Find(3, The EF Castle ); // エンティティが複合キーを定義している場合でも、可変引数を使用することで取得可能。 ジェネリックな方法でプロパティにアクセス var unicorn = context.Unicorns.Find(3); // Read the current value of the Name property string currentName1 = context.Entry(unicorn).Property(u = u.Name).CurrentValue; // 普通に「unicorn.Name」へアクセスする意味と同じ。 Console.WriteLine( Name={0} , currentName1); context.Entry(unicorn).Property(u = u.Name).CurrentValue = Franky ; // Setterも同じ。 // ◆文字列によるプロパティへのアクセスも可能。 object currentName2 = context.Entry(unicorn).Property( Name ).CurrentValue; // Getter呼び出し context.Entry(unicorn).Property( Name ).CurrentValue = Squeaky ; // Setter呼び出し エンティティのプロパティ名を指定しなくても、プロパティの名前や値を巡回できます。 var unicorn = context.Unicorns.Find(3); DbPropertyValues pvals = context.Entry(unicorn).CurrentValues; foreach(var propertyName in pvals.PropertyNames) { // すべてのプロパティをダンプ Console.WriteLine( Property {0} has value {1} , propertyName, pvals[propertyName]); // pvals[propertyName]への代入も可能。 } エンティティにComplexTypeに設定されたクラスを持つフィールドがある場合、次のような方法でアクセスが可能です。 var castle = context.Castles.Find( The EF Castle ); // CastleクラスのLocationプロパティはComplexType属性が設定されたLocationクラス var location = context.Entry(castle) .Property(c = c.Location) .CurrentValue; // locationはLocationオブジェクト var world1 = context.Entry(castle) .Property(c = c.Location.ImaginaryWorld) .CurrentValue; // この呼び出し方法ができるのは、当たり前といえば当たり前。 var world2 = context.Entry(castle) .ComplexProperty(c = c.Location) // ComplexTypeであるLocationにアクセス .Property(l = l.ImaginaryWorld) // Location.ImaginaryWordにアクセス .CurrentValue; // ComplexTypeのプロパティへアクセスする場合は、ComplexPropertyを使う。 // 前項の方法でもImaginaryWorldにアクセスできるので、わざわざComplexPropertyを使う必要はない気もする・・・。 var world3 = context.Entry(castle) .Property( Location.ImaginaryWorld ) .CurrentValue; // プロパティの指定に文字列を使う。もっとも実用的かも。 // ただし、文字列を使ってプロパティのリフレクションを取得しているハズなので、パフォーマンスはよくない。 // ComplexTypeの階層構造を遡って行く事もできる。 var creator1 = context.Entry(castle) .ComplexProperty(c = c.Location) .ComplexProperty(l = l.ImaginaryWorld) .Property(w = w.Creator) .CurrentValue; var creator2 = context.Entry(castle) .Property(c = c.Location.ImaginaryWorld.Creator) .CurrentValue; var creator3 = context.Entry(castle) .Property( Location.ImaginaryWorld.Creator ) .CurrentValue; ComplexTypeを巡回する場合、ComplexTypeはDbPropertyValuesオブジェクトなので、次のような再帰呼び出しでダンプ可能。 public static void WritePropertyValues(string parentPropertyName, DbPropertyValues propertyValues) { foreach (var propertyName in propertyValues.PropertyNames) { var nestedValues = propertyValues[propertyName] as DbPropertyValues; // propertyNameが Location のプロパティはComplexTypeなので、DbPropertyValuesオブジェクトとなる。 if (nestedValues != null) { WritePropertyValues(parentPropertyName + propertyName + . , nestedValues); } else { Console.WriteLine( Property {0}{1} has value {2} , parentPropertyName, propertyName, propertyValues[propertyName]); } } } using (var context = new UnicornsContext()) { var castle = context.Castles.Find( The EF Castle ); WritePropertyValues( , context.Entry(castle).CurrentValues); } 関連 関連エンティティの積極的読み込み Includeを使って外部関連しているプロパティを同時に読み込むことができます。 var princesses1 = context.Princesses .Include(p = p.Unicorns) .ToList(); // Include()を使うと、Pricessの読み込み時に同時に関連するUnicornのを読み込みます。 var princesses2 = context.Princesses .Include( Unicorns ) .ToList(); // Includeにはプロパティ名を文字列で指定することもできる。 もちろん、積極的に外部関連エンティティを読みこまなくても遅延読み込みによってデータが読み込まれます。 関連エンティティの遅延読み込み 外部関連エンティティへのアクセス時にエンティティのデータをデータベースから読み込むことを遅延読み込みといいます。 EntityFrameworksで関連エンティティを遅延読み込み可能にするには、プロパティをvirtualで定義します。 public class Princess { public int Id { get; set; } public string Name { get; set; } public virtual ICollection Unicorns { get; set; } // 遅延読み込み可能 } 遅延読み込み無効化 すべての遅延読み込みが行われなくなります。 public class UnicornsContext DbContext { public UnicornsContext() { this.Configuration.LazyLoadingEnabled = false; } } ライフサイクル EntityState Added IDをまだ持っていないエンティティ。SaveChanges()ではInsert処理が行われ、キーカラムがAutoIncrement属性を持ったテーブルの場合、自動的にIDが作成され割り振られる。 Deleted Detached DbContextで管理されていないエンティティ。 Modified Unchanged DbContextにアタッチ済みのエンティティ。フィールド値の変更がない状態。 Detachedなオブジェクトも、DbSet.Attach()を使ってDbContextにアタッチしたオブジェクトとして使用することが可能です。 br もしくは、直接エンティティのStateをUnchangedに設定する方法が使えます。 var u = new Unicorn { Id = 1, Name = アタッチしました }; Console.WriteLine( Status= + context.Entry(u).State); // Detached context.Unicorns.Attach(u); // 推奨方法 // context.Entry(u).State = EntityState.Unchanged // ↑Stateに直接代入しても同じ効果を得られる。 Console.WriteLine( Status= + context.Entry(u).State); // Unchanged context.SaveChanges(); このとき、SaveChanges()の呼び出しによりId=1のレコードは更新されるため、上記のコードのUnicornはNameが「アタッチしました」に更新されてしまいます。 EntityState.Add このステータスを設定したエンティティは、SaveChanges()で新規レコードとしてテーブルに追加されます。 using (var context = new UnicornsContext()) { var unicorn = new Unicorn { Name = Franky , PrincessId = 1}; context.Entry(unicorn).State = EntityState.Added; // ライフサイクルステータスを「Added」に設定。 //context.Unicors.Add(unicorn); // 内部でStateをEntityState.Addedに設定している。 context.SaveChanges(); // Addedのエンティティを新規データとして処理する } 新規追加しようとするエンティティのキーフィールドに値が入っててもよい。 br キーのフィールド属性がAutoIncrementを設定してある場合は、自動的にIdを設定します。 Idがすでにデータベースに存在する場合、SaveChanges()でエラーが発生します。 using (var context = new UnicornsContext()) { var unicorn = new Unicorn { Id=1, Name = Franky , PrincessId = 1}; // すでに「Id=1」がデータベースに存在するとする。 context.Entry(unicorn).State = EntityState.Added; context.SaveChanges(); // 例外発生 // Id=1がすでにデータベースに存在するので、 // EntityState.Addedを設定したエンティティをテーブルに追加しようとして失敗する。 } EntityState.Detached DbContextで管理していないエンティティはすべてこのステータスとなります。 データベースに存在するキーを設定しても、エンティティのオブジェクトがDbContextで管理されていない(アタッチしていない)ため、EntityState.Detachedとなります。 var u1 = new Unicorn { Name = Toshiva }; Console.WriteLine( Status= + context.Entry(u1).State); // EntityState.Detached var u2 = new Unicorn { Id = 1, Name = LG }; // Id=1はデータベースに存在する Console.WriteLine( Status= + context.Entry(u2).State); // EntityState.Detached DbContextから切り離されたエンティティオブジェクトは外部参照のトラッキングは行いません。 var u1 = context.Unicorns.Find(1); Console.WriteLine(u1.Princess); // Princessを自動的に取得する var u2 = context.Unicorns.Find(2); context.Entity(u2).State = System.Data.EntityState.Detached; Console.WriteLine(u1.Princess); // Princessを自動的に取得できないため、Nullを返す。 ローカルデータ(未コミットデータ) DbContextが管理するエンティティはSaveChangedが呼び出されるまでデータベースに保存されません(永続化されない)。 このような永続化前のDbContextが持つデータをローカルデータと呼びます。 context.Unicorns.Load(); // Unicornすべてを読み込み context.Unicorns.Add(new Unicorn { Name = Linqy }); // 新しいUnicornを追加 // ただし、永続化はまだ行われていない。 context.Unicorns.Remove(context.Unicorns.Find(1)); // Unicornを削除 // ただし、永続化はまだ行われていない。 // ◆ローカルデータのダンプ Console.WriteLine( In Local ); foreach (var unicorn in context.Unicorns.Local) { Console.WriteLine( Found {0} {1} with state {2} , unicorn.Id, unicorn.Name, context.Entry(unicorn).State); } // ◆ 永続化済みデータのダンプ Console.WriteLine( In DbSet query ); foreach (var unicorn in context.Unicorns) { Console.WriteLine( Found {0} {1} with state {2} , unicorn.Id, unicorn.Name, context.Entry(unicorn).State); } In Local Found 0 Linqy with state Added Found 2 Silly with state Unchanged Found 3 Beepy with state Unchanged Found 4 Creepy with state Unchanged In DbSet query Found 1 Binky with state Deleted Found 2 Silly with state Unchanged Found 3 Beepy with state Unchanged Found 4 Creepy with state Unchanged 低レベルSQLの実行 SQLを直接実行することができます。 var unicorns = context.Unicorns.SqlQuery( select * from Unicorns ).ToList(); // Unicornクラスのオブジェクトを取得(エンティティ) var unicornNames = context.Database.SqlQuery( select Name from Unicorns ).ToList(); // エンティティ以外も取得可能。 // この場合、戻り値はstring型を要素に持つコレクションとなる。 context.Database.ExecuteSqlCommand( update Unicorns set Name = Franky where Name = Beepy ); // SELECT以外のSQLはExecuteSqlCommand()を使う。 参照 Using DbContext in EF4.1 EF4.1の使い方。EF4.3でも基本は同じ。 Walkthrough 既存のDBからのマイグレーション方法を解説したブログポスト。
https://w.atwiki.jp/zinroonlinewiki/pages/156.html
ん?そんなもんねえよ! 【悲報】 onlineのデータ屋名乗ってる大和さん、カップル情報、ZERO!w 載せろや( ˘ω˘ )っていう強気な方のご応募お待ちしております。 COのみです。告発は受け付けません。
https://w.atwiki.jp/minecraft_psp/pages/24.html
RedStone mod 4.0.0での場合 ファイル名 worldN Nには自動で割り振られる Nが同じいくつかのファイルがまとめて1つのセーブデータになる Nを書き替えることで、複数のセーブデータを組み合わせることができる 拡張子 .lms これがあると、ロード画面に表示される 自分がどの座標のワールドにいるかの情報を持つ HPも管理? .lmscstack 所持しているアイテムの情報を持つ 作業台の上にあるものもここに保存されている 被っているカボチャもここ .lmscXY もっとも重要な、ワールドのどこに何があるかの情報 リスポーン地点もここに保存 X,Yはワールドの座標(初期ワールドは00) セーブデータを他のバージョンで使いたい場合 移動先のバージョンにて、セーブデータを作りlmsファイルを既存のlmsファイルと入れ替えるとできます。 ※仕様が大きく異なるバージョンには、移動しても使えません。